bitkeeper revision 1.1159.258.64 (42433016pzi5kr8wggkPTZcHlxXCpg)
authormjw@wray-m-3.hpl.hp.com <mjw@wray-m-3.hpl.hp.com>
Thu, 24 Mar 2005 21:24:38 +0000 (21:24 +0000)
committermjw@wray-m-3.hpl.hp.com <mjw@wray-m-3.hpl.hp.com>
Thu, 24 Mar 2005 21:24:38 +0000 (21:24 +0000)
Back out changes to netif backend messaging to set vifname.
Try using 'ip link' instead.

Signed-off-by: Mike Wray <mike.wray@hp.com>
linux-2.6.11-xen-sparse/drivers/xen/netback/interface.c
tools/python/xen/lowlevel/xu/xu.c
tools/python/xen/xend/Vifctl.py
tools/python/xen/xend/server/netif.py
xen/include/public/io/domain_controller.h

index f54dd0ad9c92af7c44e9305c25da096f3c0dbd4d..1d1a5923c44e658226bff6abb7519541559caac6 100644 (file)
@@ -121,11 +121,7 @@ void netif_create(netif_be_create_t *create)
     netif_t          **pnetif, *netif;
     char               name[IFNAMSIZ] = {};
 
-    if(create->vifname[0] == '\0'){
-        snprintf(name, IFNAMSIZ - 1, "vif%u.%u", domid, handle);
-    } else {
-        snprintf(name, IFNAMSIZ - 1, "%s", create->vifname);
-    }
+    snprintf(name, IFNAMSIZ - 1, "vif%u.%u", domid, handle);
     dev = alloc_netdev(sizeof(netif_t), name, ether_setup);
     if ( dev == NULL )
     {
index 3f32cadc34cb9c98a33390aab0544062d7443fb0..2c3ee6b33f9a9b15f714387148a28df6540016c3 100644 (file)
@@ -480,7 +480,6 @@ static PyObject *xu_message_get_payload(PyObject *self, PyObject *args)
         C2P(netif_be_create_t, domid,        Int, Long);
         C2P(netif_be_create_t, netif_handle, Int, Long);
         C2P(netif_be_create_t, status,       Int, Long);
-        C2P(netif_be_create_t, vifname,      String, String);
         return dict;
     case TYPE(CMSG_NETIF_BE, CMSG_NETIF_BE_DESTROY):
         C2P(netif_be_destroy_t, domid,        Int, Long);
@@ -648,7 +647,6 @@ static PyObject *xu_message_new(PyObject *self, PyObject *args)
         P2C(netif_be_create_t, mac[3],       u8);
         P2C(netif_be_create_t, mac[4],       u8);
         P2C(netif_be_create_t, mac[5],       u8);
-        P2CSTRING(netif_be_create_t, vifname);
         break;
     case TYPE(CMSG_NETIF_BE, CMSG_NETIF_BE_DESTROY):
         P2C(netif_be_destroy_t, domid,        u32);
index 86f68db0b4339fc3d6505b8137c8156ba31142d5..bfc750315a5c331661c448a361b7d639aca9eba4 100644 (file)
@@ -37,6 +37,19 @@ def network(op, script=None, bridge=None, antispoof=None):
     args = ' '.join(args)
     os.system(script + ' ' + args)
 
+def set_vif_name(vif_old, vif_new):
+    if vif_old == vif_new:
+        vif = view_new
+    if os.system("ip link show %s" % vif_old) == 0:
+        os.system("ip link set %s down" % vif_old)
+        os.system("ip link set %s name %s" % (vif_old, vif_new))
+        os.system("ip link set %s up" % vif_new)
+    if os.system("ip link show %s" % vif_new) == 0:
+        vif = vif_new
+    else:
+        vif = vif_old
+    return vif
+
 def vifctl(op, vif=None, script=None, domain=None, mac=None, bridge=None, ipaddr=[]):
     """Call a vif control script.
     Xend calls this when bringing vifs up or down.
index 5afb3df388bfcc676a1a5e41860d856ec544864c..5d3ef5a18d2282054b833c93107f0146c818b17b 100755 (executable)
@@ -134,7 +134,7 @@ class NetDev(controller.SplitDev):
 
         self.vifname = sxp.child_value(config, 'vifname')
         if self.vifname is None:
-            self.vifname = "vif%d.%d" % (self.controller.dom, self.vif)
+            self.vifname = self.default_vifname()
         if len(self.vifname) > 15:
             raise XendError('invalid vifname: too long: ' + self.vifname)
         mac = self._get_config_mac(config)
@@ -217,6 +217,9 @@ class NetDev(controller.SplitDev):
         """
         return self.vifname
 
+    def default_vifname(self):
+        return "vif%d.%d" % (self.controller.dom, self.vif)
+    
     def get_mac(self):
         """Get the MAC address as a string.
         """
@@ -248,6 +251,8 @@ class NetDev(controller.SplitDev):
         @param op: operation name (up, down)
         @param vmname: vmname
         """
+        if op == 'up':
+            Vifctl.set_vif_name(self.default_vifname(), self.vifname)
         Vifctl.vifctl(op, **self.vifctl_params(vmname=vmname))
         vnet = XendVnet.instance().vnet_of_bridge(self.bridge)
         if vnet:
@@ -276,7 +281,7 @@ class NetDev(controller.SplitDev):
                       { 'domid'        : self.controller.dom,
                         'netif_handle' : self.vif,
                         'mac'          : self.mac,
-                        'vifname'      : self.vifname
+                        #'vifname'      : self.vifname
                         })
         self.getBackendInterface().writeRequest(msg, response=d)
         return d
index b42510d688dab170ab2591c4a75f32d3aaee4677..c3494e34ca07aae8a60e38a03ed3d695c2961ce4 100644 (file)
@@ -466,10 +466,9 @@ typedef struct {
     u32        netif_handle;  /*  4: Domain-specific interface handle.   */
     u8         mac[6];        /*  8 */
     u16        __pad1;        /* 14 */
-    char       vifname[16];   /* 16 */
     /* OUT */
-    u32        status;        /* 32 */
-} PACKED netif_be_create_t; /* 36 bytes */
+    u32        status;        /* 16 */
+} PACKED netif_be_create_t; /* 20 bytes */
 
 /*
  * CMSG_NETIF_BE_DESTROY: